package com.fowo.api.model.amazon.order.list.detail;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fowo.api.common.validator.EnumsString;
import javax.validation.constraints.*;
import lombok.Data;

/** 亚马逊订单详情 导入导出辅助模型 */
@Data
public class AmazonOrderListDetailExcelPo {

  @Size(max = 50, message = "亚马逊订单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "亚马逊订单号")
  private String amazonOrderId;

  @Size(max = 50, message = "买家姓名长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "买家姓名")
  private String buyerName;

  @Size(max = 50, message = "买家邮件长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "买家邮件")
  private String buyerEmail;

  @Size(max = 500, message = "用户收货地址长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "用户收货地址")
  private String address;

  @Size(max = 50, message = "省州简码长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "省州简码")
  private String stateOrRegion;

  @Size(max = 20, message = "发货渠道长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货渠道")
  private String fulfillmentChannel;

  @Size(max = 50, message = "店铺编码长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "店铺编码")
  private String shopCode;

  @ExcelProperty(value = "店铺id")
  private Long shopId;

  @Size(max = 50, message = "国家长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家")
  private String country;

  @Size(max = 50, message = "城市长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "城市")
  private String city;

  @Size(max = 50, message = "地区长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "地区")
  private String district;

  @Size(max = 20, message = "状态长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "状态")
  private String orderStatus;

  @ExcelProperty(value = "是否评测订单")
  private Long isAssessed;

  @Size(max = 50, message = "订单总金额长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单总金额")
  private String orderTotalAmount;

  @Size(max = 50, message = "订单金额币种长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单金额币种")
  private String currency;

  @Size(max = 50, message = "订单金额币种符号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单金额币种符号")
  private String icon;

  @Size(max = 50, message = "邮编长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "邮编")
  private String postalCode;

  @Size(max = 20, message = "是否多渠道订单长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否多渠道订单")
  private String isMcfOrder;

  @Size(max = 20, message = "是否退货订单长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否退货订单")
  private String isReturnOrder;

  @Size(max = 20, message = "是否已换货长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否已换货")
  private String isReplacedOrder;

  @Size(max = 20, message = "是否换货订单长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否换货订单")
  private String isReplacementOrder;

  @Size(max = 50, message = "国家代码长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家代码")
  private String countryCode;

  @Size(max = 50, message = "订购时间长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订购时间")
  private String purchaseDateLocal;

  @Size(max = 50, message = "下单时间（UTC）长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "下单时间（UTC）")
  private String purchaseDateLocalUtc;

  @Size(max = 50, message = "订单更新站点时间长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单更新站点时间")
  private String lastUpdateDate;

  @Size(max = 50, message = "订单更新站点时间（UTC）长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单更新站点时间（UTC）")
  private String lastUpdateDateUtc;

  @Size(max = 50, message = "发货时限长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货时限")
  private String earliestShipDate;

  @Size(max = 50, message = "发货时限（UTC）长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货时限（UTC）")
  private String earliestShipDateUtc;

  @Size(max = 50, message = "地址1长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "地址1")
  private String addressLine1;

  @Size(max = 50, message = "地址2长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "地址2")
  private String address2;

  @Size(max = 50, message = "地址3长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "地址3")
  private String address3;

  @Size(max = 50, message = "电话长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "电话")
  private String phone;

  @Size(max = 50, message = "用户收货名长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "用户收货名")
  private String name;

  @Size(max = 20, message = "是否为B2B订单长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否为B2B订单")
  private String isBusinessOrder;

  @EnumsString(
    value = { "含税", "不含税" },
    message = "是否含税的可用值为 “含税”, “不含税” 其中之一"
  )
  @Size(max = 50, message = "是否含税长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否含税")
  private String taxesIncluded;

  @Size(max = 50, message = "发货地址长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货地址")
  private String shippingAddress;

  @Size(max = 50, message = "配送服务长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "配送服务")
  private String shipServiceLevel;

  @Size(max = 50, message = "装运服务级别长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "装运服务级别")
  private String shipmentServiceLevelCategory;

  @Size(max = 50, message = "采购订单编号（买家结账时输入）长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "采购订单编号（买家结账时输入）")
  private String purchaseOrderCode;

  @Size(max = 50, message = "采购订单id长度不能超过20")
  @ExcelProperty(value = "采购订单id")
  private Long purchaseOrderId;

  @Size(max = 50, message = "付款方式 COD (Cash on delivery)长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "付款方式 COD (Cash on delivery)")
  private String paymentMethod;

  @Size(max = 50, message = "亚马逊结账（CBA）的自定义发货标签长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "亚马逊结账（CBA）的自定义发货标签")
  private String cbaDisplayAbleShippingLabel;

  @Size(max = 50, message = "订单类型长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "订单类型")
  private String orderType;

  @Size(
    max = 50,
    message = "最晚发货时间（承诺配送订单的最晚发货时间）长度不能超过20"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "最晚发货时间（承诺配送订单的最晚发货时间）")
  private String latestShipDate;

  @Size(
    max = 50,
    message = "最早送达时间（承诺送达订单的最早送达时间）长度不能超过20"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "最早送达时间（承诺送达订单的最早送达时间）")
  private String earliestDeliveryDate;

  @Size(
    max = 50,
    message = "最晚送达时间（承诺送达订单的最晚送达时间）长度不能超过20"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "最晚送达时间（承诺送达订单的最晚送达时间）")
  private String latestDeliveryDate;

  @Size(max = 50, message = "已发货的商品数长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "已发货的商品数")
  private String numberOfItemsShipped;

  @Size(max = 50, message = "未发货的商品数长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "未发货的商品数")
  private String numberOfItemsUnShipped;

  @Size(max = 50, message = "销售渠道长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "销售渠道")
  private String salesChannel;

  @EnumsString(
    value = { "推广", "未推广" },
    message = "是否推广的可用值为 “推广”, “未推广” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否推广")
  private String isPromotion;
}
